IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='spRpt_RegistroINFOR' and XTYPE='P')
BEGIN
	DROP PROCEDURE [dbo].[spRpt_RegistroINFOR]
END
GO
CREATE PROCEDURE [dbo].[spRpt_RegistroINFOR]
	 @OP VARCHAR(64)=NULL
	,@ParamAuxiliar NVARCHAR(MAX)=NULL   /* PARAMETRO AUXILIAR */
	--,@Id INT=NULL
	,@Periodo_Ini VARCHAR(6)=NULL
	,@Periodo_Fin VARCHAR(6)=NULL
	--,@FechaGrab DATETIME=NULL
	--,@Usuario VARCHAR(32)=NULL
	--,@Observaciones VARCHAR(max)=NULL
WITH ENCRYPTION
AS
SET NOCOUNT ON
BEGIN TRY

/**** VERIFICAR SI LA SESSION DE USUARIO ESTA ACTIVA ****/
-----EXEC SP_ExecuteSQL N'dbo.spSeguridadUsuario @OP=''VerificarSessionActiva'''
/**** FIN - VERIFICAR SI LA SESSION DE USUARIO ESTA ACTIVA ****/--DECLARE @ERROR VARCHAR(500)

/*****     OPERACION POR DEFECTO    *****/
IF @OP IS NULL OR @OP = ''
BEGIN
	SELECT 
		 t2.Periodo
		,t2.CodCompromiso 
		,t2.CodRegistro 
		,t2.[NumeroTransaccion]
		,t2.[LineaLibroGeneral]
		,t2.[IdTransaccion]
		,t2.[TipoTransaccion]
		,t2.[DivisionAdministrativa]
		,t2.[CentroCosto]
		,t2.[UsuarioINFOR]
		,t2.[CuentaContable]
		,t2.[Valor]
		,t2.[ValorMDF]
		,t2.[Moneda]
		,t2.[DescripcionLinea]
		,t2.[DescripcionCabecera]
		,t2.[IdEntidad]
		,t2.[FechaDocumento]
		,t2.[FechaEfectiva]
		,t2.[FechaCreacion]
		,t2.[ReferenciaTransaccion]
		,t2.[ReferenciaOrden]
	FROM 
		[ControlPresupuesto].[dbo].[RegistroINFORDetalle] t2 
	
	RETURN 0
END

/*****     IMPRIMIR    *****/
IF @OP = 'Imprimir'
BEGIN
	SELECT 
		 @Periodo_Ini=CASE WHEN @Periodo_Ini IS NULL OR  RTRIM(@Periodo_Ini)='' THEN REPLICATE(' ',6) ELSE @Periodo_Ini END
		,@Periodo_Fin=CASE WHEN @Periodo_Fin IS NULL OR  RTRIM(@Periodo_Fin)='' THEN REPLICATE('Z',6) ELSE @Periodo_Fin END
	
	SELECT 
		 t2.PERIODO
		,t2.CodCompromiso AS [COD COMPROMISO]
		,t2.CodRegistro AS [COD REGISTRO]
		,t2.[DivisionAdministrativa] AS [DIV. ADMINISTRATIVA]
		,t2.[NumeroTransaccion] AS [NUM. TRANSACCION]
		,t2.[LineaLibroGeneral] AS [LINEA LIBRO GENERAL]
		,t2.[CentroCosto] AS [UNIDAD]
		,t2.[UsuarioINFOR] AS [USUARIO]
		,t2.[CuentaContable] AS[NATURALEZA]
		,t2.[Valor] AS [VALOR]
		,t2.[ValorMDF] AS [VALOR MDF]
		,t2.[Moneda] AS [MONEDA]
		,t2.[DescripcionLinea] AS [DESC. LINEA]
		,t2.[DescripcionCabecera] AS [DESC. CABECERA]
		,t2.[ReferenciaTransaccion] AS [REFERENCIA]
		,t2.[FechaDocumento] AS [FECHA DCTO.]
		,t2.[IdEntidad] AS [ENTIDAD]
		,t2.[TipoTransaccion] AS [TIPO TRANSACCION]
		,t2.[FechaCreacion] AS [FECHA CREACION]
		,t2.[IdTransaccion] AS [ID TRANSACCION]
		,t2.[FechaEfectiva] AS [FECHA EFECTIVA]
		,t2.[ReferenciaOrden] AS [REFERENCIA ORDEN]
	FROM 
		[ControlPresupuesto].[dbo].[RegistroINFORDetalle] t2 
	WHERE
		t2.Periodo BETWEEN @Periodo_Ini AND @Periodo_Fin	

	RETURN 0
END

--- Si se llega a este punto es porque el @OP indicado no Existe en el Procedimiento Almacenado
IF @OP IS NOT NULL
	BEGIN
	SET @ParamAuxiliar='La Operacion "'+@OP+'" No esta definida en el Procedimiento almacenado "'+OBJECT_NAME(@@PROCID)+'", Revise!.'
	RAISERROR(@ParamAuxiliar,16,1)
	RETURN 1
END

--- CONTROLAR Y REGISTRAR LOS ERRORES
END TRY
BEGIN CATCH
	--- Recopilo la informacion del error
	DECLARE @ERROR_NUMBER INT=ERROR_NUMBER(),@ERROR_SEVERITY INT=ERROR_SEVERITY(),@ERROR_STATE INT=ERROR_STATE(),@ERROR_PROCEDURE VARCHAR(128)=ERROR_PROCEDURE(),@ERROR_LINE INT=ERROR_LINE(),@ERROR_MESSAGE VARCHAR(2048)=ERROR_MESSAGE()
	--- Si hay transacciones abiertas, hago un rollback, SE ENCIERRA EN UN (TRY-CATCH) PARA QUE NO SE MUESTRE EL ERROR: Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT
	IF(@@TRANCOUNT>0) BEGIN BEGIN TRY ROLLBACK TRANSACTION END TRY BEGIN CATCH END CATCH END
	--- Ejecuto el SP que controla y registra el error
	EXEC [spSeguridadMessageException] @OP='MostrarMensaje',@ERROR_NUMBER=@ERROR_NUMBER,@ERROR_SEVERITY=@ERROR_SEVERITY,@ERROR_STATE=@ERROR_STATE,@ERROR_PROCEDURE=@ERROR_PROCEDURE,@ERROR_LINE=@ERROR_LINE,@ERROR_MESSAGE=@ERROR_MESSAGE
	RETURN 1
END CATCH;
